package algorithms.question.class01;

import common.util.MyUtil;

/**
 * 给定一个非负整数num，
 * 如何不用循环语句，
 * 返回>=num，并且离num最近的，2的某次方
 *
 * @author guichang
 * @date 2021/7/29
 */

@SuppressWarnings("all")
public class Code3_最近的2的某次方 {

    public static void main(String[] args) {
        MyUtil.print(nearestPowerOf2(90));
    }

    /**
     * hashmap的源码
     */
    public static int nearestPowerOf2(int n) {
        n--;
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        return n < 0 ? 1 : ++n;
    }
}